package org.wechat.user.utils;

import java.util.ArrayList;
import java.util.List;

import org.wechat.common.entity.results.WechatResult;
import org.wechat.common.utils.ConvertJsonUtils;
import org.wechat.user.entity.UserOpenListInfo;
import org.wechat.user.entity.WeixinUser;
import org.wechat.user.request.BatchGet;
import org.wechat.user.request.BatchGetRequest;

import com.alibaba.fastjson.JSONObject;


/**
 * 用户转换工具类
 * @author Andy
 *
 */
public class UserConvertUtils {
	
	/**
	 * (测试成功)
	 * 将json格式的字符串转换为List集合
	 * @param jsonData	json格式的字符串,请注意该方法为  getUserOpenList返回结果的定制方法,其余否则会报错
	 * @return	WechatResult.isuccess==true 表示成功   Object中则为 UserOpenListInfo对象, 否则为为失败信息
	 */	
	public static WechatResult getOpenIdList(String jsonData){
		WechatResult resultObj = new WechatResult();
		boolean result = ConvertJsonUtils.jsonDataHasKeyWord(jsonData,"data");		//表示获取成功
		if(result){
			UserOpenListInfo info = JSONObject.parseObject(jsonData,UserOpenListInfo.class);
			JSONObject object = JSONObject.parseObject(jsonData);
			String data = object.getJSONObject("data").getString("openid");			//
			List<String> list = ConvertJsonUtils.jsonToJavaList(data,String.class);
			info.setOpenid(list);
			resultObj.setObj(info);
			resultObj.setSuccess(true);
		}
		resultObj.setMsg(jsonData);
		return resultObj;
	}
	
   /**
    * (测试成功)
    * 根据用户openid列表获取用户信息
    * 该方法待改进,  改进原因: 有多少条数据,则需要创建多少个对象,严重影响效率
    * @param listInfo
    * @return	resultObj.success=true 则obj中获取的是BatchGetRequest对象
    */
   public static WechatResult convertRequestParams(List<String> list,String lang){
	   WechatResult resultObj = new WechatResult();
	   BatchGetRequest request = null;
	   if(list!=null&&list.size()>0){
		  request = new BatchGetRequest();
		  List<BatchGet> listget = new ArrayList<BatchGet>();
		  request.setUser_list(listget);
		  for(String item:list){
			  BatchGet get = new BatchGet();				//待改进
			  get.setOpenid(item);
			  get.setLang((lang==null||"".equals(lang))?"zh_CN":lang);				//默认为zh_CN
			  listget.add(get);
		  }
		  resultObj.setObj(request);
		  resultObj.setSuccess(true);
	   }
	   return resultObj;
   }
   
   /**
    * (测试成功)
    * 根据返回结果集转换为用户详细信息参数
    * @param data
    * @return	
    */
   public static WechatResult getListUserInfo(String data){
	   WechatResult result = new WechatResult();
	   if(data!=null&&!"".equals(data)){
		  boolean success = ConvertJsonUtils.jsonDataHasKeyWord(data,"user_info_list");
		  if(success){
			  String arrayData = JSONObject.parseObject(data).getString("user_info_list");
			  List<WeixinUser> listuser = ConvertJsonUtils.jsonToJavaList(arrayData,WeixinUser.class);
			  if(listuser.size()>0){
				  result.setSuccess(true);
				  result.setObj(listuser);
			  }
		  }
	   }
	   return result;
   }
   
   
   
}